package com.pucong.gitee.database.backup.business.database.service;

import com.pucong.gitee.database.backup.common.entity.database.dto.AutoDataSourceKeywordsDto;
import com.pucong.gitee.database.backup.common.entity.database.dto.DatabaseDto;
import com.pucong.gitee.database.backup.common.entity.database.dto.SelectDbBackTreeDto;
import com.pucong.gitee.database.backup.common.entity.database.vo.DbBackTreeVo;
import com.pucong.gitee.database.backup.common.entity.database.vo.DbTableFiledVo;
import com.pucong.gitee.database.backup.common.entity.database.vo.RunSqlResultPage;
import com.pucong.gitee.database.backup.common.entity.sys.UserJwt;

import javax.websocket.Session;
import java.util.List;

public interface OperationDataSqlService {

    /**
     * 处理websocket消息
     *
     * @param message
     * @param session
     */
    void doMsg(String message, Session session);

    /**
     * 执行sql
     *
     * @param databaseDto
     * @return
     */
    RunSqlResultPage executeSql(String sessionId, DatabaseDto databaseDto);

    /**
     * 处理事物
     *
     * @param databaseDto
     * @return
     */
    void autoTransactionalCommit(String sessionId, DatabaseDto databaseDto);

    /**
     * 根据上级 查询下级数据源数据
     *
     * @param dto
     * @return
     */
    List<DbBackTreeVo> getDataSourceTreeList(SelectDbBackTreeDto dto);

    /**
     * 获取该数据源下的关键词
     *
     * @param dto
     * @return
     */
    List<DbTableFiledVo> getTableFiledListByDBInfo(AutoDataSourceKeywordsDto dto);

    /**
     * 校验用户权限
     * @param token
     * @param dbId
     * @return
     */
    UserJwt checkUserPermission(String token, String dbId);

    void initConnection(Session session);

    void close(Session session);
}
